package com.desire.test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class _19_创建文件_将文件打印到控制台 {
    public static void main(String[] args) {
        String f = "C:\\Users\\desire\\Desktop\\javaProject\\01-javaBase\\src\\main\\resources\\my.txt";
        //字节流建立文件，并写入内容
        try {
            //覆盖方式，建立文件
            //FileOutputStream fos = new FileOutputStream(f);
            //追加方式，建立文件，如果文件存在，则文件指针移动到文件尾write写入数据
            FileOutputStream fos = new FileOutputStream(f, true);
            fos.write("hello 中文效果\r\n".getBytes());
            fos.flush();
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        //字节流读取文件（文本文件）try with 会自动关闭流
        f = "C:\\Users\\desire\\Desktop\\javaProject\\01-javaBase\\src\\main\\java\\com\\desire\\test\\_19_创建文件_将文件打印到控制台.java";
        try (var fis = new FileInputStream(f)) {
            //读到了整个文件
            byte[] buf = fis.readAllBytes();
            // 将字节转成字符
            String txt = new String(buf);
            // 匹配每一行
            // 正则表达式中出现了^或者$, 默认只会匹配第一行. 设置了Pattern.MULTILINE模式,会匹配所有行
            // 默认情况下, 正则表达式中点(.)不会匹配换行符, 设置了Pattern.DOTALL模式, 才会匹配所有字符包括换行符
            Pattern p = Pattern.compile(".*\\r\\n", Pattern.MULTILINE);
            Matcher m = p.matcher(txt);

            int num = 0;
            while (m.find()) {
                System.out.printf("%02d. %s", ++num, m.group());
            }
        } catch (IOException e) {
            e.printStackTrace();


        }
    }
}


